<template>
  <div>
	<p @click="testDebounce">测试防抖</p>
  </div>
</template>

<script>
const debounce = (fnc, delay=3000) => {
  var timer = null; // 创建一个用来存放定时器的变量
  return function () {
    if(timer) clearTimeout(timer); //只要触发就清除
    timer = setTimeout(() => {
      console.log('定时器函数执行了')
      fnc.apply(this, arguments);
    }, delay);
  };
}
export default {
  methods: {
    testDebounce() {
      console.log('我点击了')
      debounce(this.testFnc, 3000)();
    },
    testFnc() {
       console.log('执行了传入的函数testFnc');
    },
    debounce(fnc, delay=3000) {
      let timer = null; // 创建一个用来存放定时器的变量
      return function () {
        if(timer) clearTimeout(timer); //只要触发就清除
        timer = setTimeout(() => {
          console.log('定时器函数执行了')
          fnc.apply(this, arguments);
        }, delay);
      };
    }
  }
}
</script>
